#include <iostream>
#include <person.cpp>
#include <myArray.hpp>

using namespace std;

template <typename T> // 声明一个模版，后面的一个函数中T为通用数据类型
void swapMine(T &a, T &b)
{
    T tmp;
    tmp = a;
    a = b;
    b = tmp;
    return;
}

// 类模g版
// template <class T1, class T2>
// class Person
// {
// public:
//     Person(T1 name, T2 age);

//     void showPerson();

//     T1 m_name;
//     T2 m_age;
// };

// template <class T1, class T2>
// Person<T1, T2>::Person(T1 name, T2 age)
// {
//     m_name = name;
//     m_age = age;
// }

// template <class T1, class T2>
// void Person<T1, T2>::showPerson()
// {
//     cout << m_name << m_age << endl;
// }

int main()
{

    int a, b;
    a = 10, b = 20;
    swapMine(a, b);      // 自动类型推导
    swapMine<int>(a, b); // 显式指定数据类型
    cout << b << endl;

    Person<string, int> p1("abc", 123);
    p1.showPerson();

    MyArray<int> arr1(10);
    MyArray<int> arr2(arr1);

    system("pause");
}